package com.hbnu.common.service.impl;

import com.hbnu.common.dao.UserDao;
import com.hbnu.common.entity.User;
import com.hbnu.common.response.ServiceResponse;
import com.hbnu.common.service.LoginService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.sql.SQLException;

/**
 * {@inheritDoc}
 * <p>
 * 该实现类依赖于 {@link UserDao} 进行用户数据的查询操作，并使用 SLF4J 进行日志记录。
 */

public class LoginServiceImpl implements LoginService {
    private static final Logger logger = LoggerFactory.getLogger(LoginServiceImpl.class);
    private final UserDao userDao;

    /**
     * 构造函数，注入 UserDao 依赖。
     *
     * @param userDao 用户数据访问对象
     */
    public LoginServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public ServiceResponse<User> handleLogin(String username, String password) {
        try {
            User user = userDao.queryUser(username);

            if (user == null) {
                return ServiceResponse.fail("用户不存在");
            }

            if (!user.getPassword().equals(password)) {
                return ServiceResponse.fail("密码错误");
            }

            logger.info("用户登录成功：用户名={}", username);
            return ServiceResponse.success(user, "登录成功");
        } catch (SQLException e) {
            logger.error("登录异常：用户名={}，异常信息={}", username, e.getMessage(), e);
            return ServiceResponse.fail("系统繁忙");
        }
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public ServiceResponse<Void> handleForgetPassword() {
        logger.info("用户请求忘记密码：请与管理员联系");
        return ServiceResponse.success("请联系管理员，邮箱：2473599024@qq.com");
    }
}
